<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>defineProperty</title>
</head>
<body>
<script>
    let person = {};
    // 追加属性 name
    // set 和 get 中的 this 都是当前对象，哪个是当前对象？你给哪个对象追加属性就是哪个对象，这里就是 person
    Object.defineProperty(person, 'name', {
        set(value){  // 当修改 person.name 时，set 被调用，set 会收到修改后的值
            console.log("set 被调用了", value);
            // 不要在 set 中设值，递归调用
            this.name = value;
        },
        get(){  // 当读取 person.name 时，get 被调用，get 的返回值就是 name 的值
            console.log("get 被调用了");
            return 100
        }
    });
    person.name = 'Peppa'; // 设值 person.name 调用 set() 并传入该值
    console.log(person.name); // 读取 person.name 调用 get() 返回 100
</script>
</body>
</html>
